/**
 * 电机驱动，包括读取和控制
 */

#ifndef ENC_H
#define ENC_H

#include <stdint.h>

typedef struct {
  uint32_t val;
  uint32_t ti;  // 参考时间间隔（ms）
  int64_t pos1, pos2;  // 位置;
  int32_t count1, count2; // 一个周期的计数（路程极小值）
} Enc_HandleTypeDef;

uint8_t Enc_Init(Enc_HandleTypeDef *handle);
void Enc_Update(Enc_HandleTypeDef *handle);
void Enc_SetSpeed(Enc_HandleTypeDef *handle, float speed1, float speed2, float beta);
void Enc_SetPos(Enc_HandleTypeDef *handle, int64_t pos1, int64_t pos2);
#endif
